from rest_framework.generics import ListAPIView, ListCreateAPIView
from rest_framework.pagination import PageNumberPagination
from rest_framework.response import Response
from rest_framework.mixins import CreateModelMixin
from apps.meiduo_admin.serializers.user import UserSerializer, UserAddSerializer
from apps.meiduo_admin.utils import PageNum
from apps.users.models import User


class UserListAPIView(ListCreateAPIView):
    """
    queryset 是属性设置  不能根据业务逻辑动态返回数据
    def get_queryset(self):
        可以根据业务逻辑动态返回数据
    """

    # 查询集
    # queryset = User.objects.all()
    def get_queryset(self):
        keyword = self.request.query_params.get('keyword')
        if keyword:
            # 有查询参数，查参数指定的
            data = User.objects.filter(username__contains=keyword)
        else:
            # 没有查询参数，查所有
            data = User.objects.all()
        return data

    # UserSerializer 主要是进行 对象转字典  专门用于 GET
    # 能不能再定义一个 序列号器 这个序列号器 专门用于 POST中的新增用户
    """
    serializer_class 是属性设置一个序列号器
    def get_serializer_class(self): 可以根据业务逻辑返回不同的序列号器
    """

    # 创建序列化器
    # serializer_class = UserSerializer
    def get_serializer_class(self):
        if self.request.method == 'GET':
            return UserSerializer
        elif self.request.method == 'POST':
            return UserAddSerializer

    # 自定义分页类
    pagination_class = PageNum

    # def get(self,request):
    #     keyword=self.request.query_params.get('keyword')
    #     if keyword:
    #         data = User.objects.filter(username__contains=keyword)
    #     else:
    #         data = User.objects.all()
    #     serializer=UserSerializer(data,many=True)
    #     return Response(serializer.data)
